//
// Created by antler on 2019/1/3.
//

#ifndef LUA_SCRIPT_H
#define LUA_SCRIPT_H

#include "UserInfo.h"
#include "ScriptInfo.h"

#define CLASSNAME_SCRIPT "script"
#define USERTYPE_SCRIPT "script"

class Script {

public:
    static Script *getInstance();

    static void releaseInstance();

    Script();

    ~Script();

public:
    // 获取用户信息
    // 获取当前脚本用户信息，返回UserInfo类型数据和错误码。错误码对照表如下：
    // 0: 正常获取
    // -1: 开发助手模式
    // -2 ~ -4: 内部错误
    // -5: 网络异常
    int getUserInfo(UserInfo &userInfo);

    // 获取脚本信息
    // 获取当前脚本信息，返回ScriptInfo类型数据和错误码。错误码对照表如下：
    // 0: 正常获取
    // -1: 开发助手模式
    int getScriptInfo(ScriptInfo &scriptInfo);

    // 获取脚本公告
    // 根据key和token，获取对应脚本公告信息，返回公告内容和错误码。错误码对照表如下：
    // 0: 正常获取
    // -1 ~ -4: 内部错误
    // -5: 网络异常
    // -6: key对应公告内容不存在
    // token为开发助手调试中用于获取公告服务测试环境表单中数据的调试口令，需要在开发者平台中申请创建，正式运行环境下不需要传入（保留删除均可）；
    // 该函数根据key索引从公告服务表单中取得对应的value值，注意正式环境与测试环境的数据有所区别，需要独立配置。
    int getBillboard(const std::string &key, const std::string &token, std::string &result);

    // 获取ui目录资源内容
    // 获取xsp文件ui/目录下的file文件资源
    std::string getUIData(const std::string &file);

    // 获取res目录资源内容
    // 获取xsp文件res/目录下的file文件资源
    std::string getResData(const std::string &file);

protected:
    static Script *g_pScript;
};


#endif //LUA_SCRIPT_H
